#include<stdio.h>
#include "linklist.h"
#include<stdlib.h>
void test_tail_insert();
void test_insert();
void test_delete();
void test_reverse();
void test_adjmax();
void test_merge();
void test_sort();

int main(){
	test_sort();
	return 0;
}

void test_sort(){
	linklist h1 = list_create();
	list_tail_insert(h1, 9900);
	list_tail_insert(h1, 500);
	list_tail_insert(h1, 100);
	list_tail_insert(h1, 900);
	list_show(h1);
	list_sort(h1);
	list_show(h1);
	list_free(h1);
}

void test_merge(){
	linklist h1 = list_create();
	list_tail_insert(h1, 400);
	list_tail_insert(h1, 500);
	list_tail_insert(h1, 800);
	list_tail_insert(h1, 900);
	list_show(h1);

	linklist h2 = list_create();
	list_tail_insert(h2, 1);
	list_tail_insert(h2, 2);
	list_tail_insert(h2, 3);
	list_tail_insert(h2, 4);
	list_show(h2);

	list_merge(h1, h2);
	list_show(h1);

	list_free(h1);
	list_free(h2);

}

void test_adjmax(){
	linklist h = list_create();
	list_tail_insert(h, 100);
	list_tail_insert(h, 5);
	list_tail_insert(h, 8);
	list_tail_insert(h, 9);
	list_show(h);
	data_t tmp;
	linklist p = list_adjmax(h, &tmp);
	printf("p->data: %d\n", p->data);
	printf("max value : %d\n", tmp);
	list_free(h);
	
}

void test_reverse(){
	linklist h = list_create();
	list_tail_insert(h, 1);
	list_tail_insert(h, 5);
	list_tail_insert(h, 8);
	list_tail_insert(h, 9);
	list_show(h);
	list_reverse(h);
	list_show(h);
	list_free(h);

}

void test_delete(){
	linklist h = list_create();
	list_tail_insert(h, 1);
	list_tail_insert(h, 5);
	list_tail_insert(h, 8);
	list_tail_insert(h, 9);
	list_insert(h, 100, 4);
	list_show(h);
	// 为避免野指针，返回一个空指针，重置H
	// 不接收NULL的话，后面函数就会出现异常
	h = list_free(h);
	list_delete(h, 0);
	list_delete(h,3);
	list_show(h);
	list_free(h);
	
}

void test_insert(){
	linklist h = list_create();
	list_tail_insert(h, 1);
	list_tail_insert(h, 5);
	list_tail_insert(h, 8);
	list_tail_insert(h, 9);
	list_insert(h, 100, 100);
	list_show(h);
}

void test_tail_insert(){
	linklist h = list_create();
	 printf("Please input number:");
	 while(1){
		 data_t tmp;
	 	scanf("%d", &tmp);
		if(tmp == -1){
			break;
		}
		list_tail_insert(h, tmp);
	 	printf("Please input number:");
	 }
	 list_show(h);

	 //释放内存
	 list_free(h);
}
